home *** CD-ROM | disk | FTP | other *** search
- userdict begin /ropedict 85 dict def end
- ropedict begin
- /blocksetup
- { q translate rotate scale n } def
- /blockend
- { closepath fill } def
- /blockfinish
- { closepath fill Q } def
- /movetoproc {
- dup /sby xdf
- /spy xdf
- dup /sbx xdf
- /spx xdf
- sbx sby m
- } def
- /1stlinetoproc
- { /esy xdf /esx xdf
- blockdata
- /totdist totdist dist add def
- /sbx esx def /sby esy def
- deltax 0 ne deltay 0 ne and
- { /prevtotdeltax deltax def /prevtotdeltay deltay def } if
- } def
- /2ndlinetoproc
- { /esy xdf /esx xdf
- bdflag false eq
- {blockdata esx spx eq esy spy eq and{lastsegdist}if}if
- offset ldelta add dist le
- {
- deltax 0 eq deltay 0 eq and
- {/ang 0 def}{/ang deltay deltax atan def}ifelse
- offset 0 lt
- {/prevang prevdeltax 0 eq prevdeltay 0 eq and
- {0}{prevdeltay neg prevdeltax neg atan}ifelse def
- ang prevang sub abs dup 120 le exch 240 ge or
- {/offset 0 def bdflag true eq
- {
- lastsegdist
- }if
- }if
- }if
- offset ldelta dist
- {/curdelta xdf
- /ldeltax ang cos curdelta ldelta 2 div add mul def
- /ldeltay ang sin curdelta ldelta 2 div add mul def
- bll2 blw ang sbx ldeltax add sby ldeltay add drawblock
- /offset curdelta ldelta add dist sub def
- ldelta offset abs .001 add gt {exit} if
- }for
- /prevdeltax deltax def /prevdeltay deltay def
- /deltax 0 def /deltay 0 def
-
- /sbx esx def /sby esy def
- }if
- }def
- /1stcloseproc
- { spx spy 1stlinetoproc
- }def
- /2ndcloseproc
- {sbx spx ne sby spy ne or{
-
-
-
- /esx spx def /esy spy def blockdata /bdflag true def lastsegdist
- spx spy 2ndlinetoproc}if
- }def
-
- /blockdata
- { /deltay esy sby sub def
- /deltax esx sbx sub def
- /dist deltay dup mul deltax dup mul add sqrt def
- }def
- /lastsegdist
- {/dist dist offset sub ldelta div round ldelta mul offset add def
- }def
- end
- /newrope
- {
- supdict begin
- ropedict begin
- /color xdf
- colorchoice
- /spacing xdf
- /blw xdf
- /bll xdf
- /drawblock xdf
-
- q {flattenpath}fp
- /totdist 0 def /totdeltax 0 def /totdeltay 0 def
-
- {movetoproc} {1stlinetoproc} {} {1stcloseproc} pathforall
- /nm totdist bll spacing add div def
- /nm2 nm floor def
- nm2 0 ne
- {
- /fr nm nm2 sub def
- /nm2 fr 0.5 ge {nm2 1 add} {nm2} ifelse def
- /bll2 fr 0.5 ge {fr 1.0 sub} {fr} ifelse
- bll spacing add mul nm2 div bll add spacing add def
- /ldelta bll2 def
- /bll2 bll2 bll bll spacing add div mul def
- /offset 0 def /totdeltax 0 def /totdeltay 0 def /cnt 0 def
- /prevtotdeltax 0 def /prevtotdeltay 0 def /bdflag false def
- {movetoproc} {2ndlinetoproc} {} {2ndcloseproc} pathforall
- } if
- Q n end end
- } def